import Vue from 'vue'
import Vuex from 'vuex'
import { getLocal, setLocal } from '@/utils/local.js'
// 导入获取用户的信息
import { info } from '@/api/my.js'
// 导入获取面试题的信息
// import {info} from '@/api/company/company.js'
Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    // 把token存在vuex中
    token: getLocal(),
    // 这个看情况决定是否要放在vuex中,我先写好一个案例,给你们参考如何操作vuex
    userInfo: getLocal('userInfo') || {},

    // 存储当前用户是不是有点击开始答题-(数据)
    exerciseList: []
  },
  mutations: {
    // 只能进行同步操作 调用这里面的setUserInfo方法需要通过this.$store.commit('setUserInfo', '需要传递的参数')
    setUserInfo (state, payload) {
      state.userInfo = payload
    },
    // 修改收藏的面试题
    setcollectquestions (state, collectQuestions) {
      // 保存试题
      state.userInfo.collectQuestions = collectQuestions
    },
    // 设置面试题
    setquestion (state, questionList) {
      // 保存面试题
      state.questionList = questionList
    },
    // 清空面试题
    clearquestion (state) {
      state.questionList = []
    }
  },
  actions: {
    // 能进行异步操作,无法直接修改state中的数据,需要通过mutations方法来间接修改
    async setUserInfo (context) {
      // 请求服务器等待用户信息
      const res = await info()
      // 接收服务器返回的数据
      context.commit('setUserInfo', res.data)
      setLocal(res.data, 'userInfo')
      // window.console.log('vuex', res.data)
    },
    async getUserInfo (content, isForce) {
      if (!content.state.userInfo || isForce) {
        const userRes = await info()
        // 获取用户信息
        const userInfo = userRes.data
        userInfo.avatar = process.env.VUE_APP_URL + userInfo.avatar
        content.commit('setUserInfo', userInfo)
      }
    }
  },
  // 获取收藏文章
  collectArticles (state) {
    if (state.userInfo) {
      return state.userInfo.collectArticles
    }
    return []
  },
  // 获取收藏面试题
  collectQuestions (state) {
    if (state.userInfo) {
      return state.userInfo.collectQuestions
    }
    return []
  },
  // 获取面试题
  getQuestion (state) {
    return function (questionId) {
      return state.questions[questionId]
    }
  },
  modules: {}
})
